'''
数据抓取：
在爬虫实现上，除了scrapy框架之外，python有许多与此相关的库可供使用。其中，在数据抓取方面包括： urllib2（urllib3）、requests、mechanize、selenium、splinter；
其中，urllib2（urllib3）、requests、mechanize用来获取URL对应的原始响应内容；而selenium、splinter通过加载浏览器驱动，获取浏览器渲染之后的响应内容，模拟程度更高。
考虑效率、当然能使用urllib2（urllib3）、requests、mechanize等解决的尽量不用selenium、splinter，因为后者因需要加载浏览器而导致效率较低。
对于数据抓取，涉及的过程主要是模拟浏览器向服务器发送构造好的http请求，常见类型有：get/post

数据解析：
在数据解析方面，相应的库包括：lxml、beautifulsoup4、re、pyquery。
对于数据解析，主要是从响应页面里提取所需的数据，常用方法有：xpath路径表达式、CSS选择器、正则表达式等。
其中，xpath路径表达式、CSS选择器主要用于提取结构化的数据。而正则表达式主要用于提取非结构化的数据。

'''

#抓取百度新闻首页新闻标题信息
import urllib.request
import re

url = 'https://news.baidu.com/'
#伪装浏览器用户
headers = {
	'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36',
}
#模拟浏览器请求
req = urllib.request.Request(url,headers=headers)
#执行请求获取响应信息
res = urllib.request.urlopen(req)
#从响应对象中读取信息并解码
data = res.read().decode('utf-8')
#使用正则解析出新闻标题信息
pat = '<a href="(.*?)" .*? target="_blank">(.*?)</a>'
dlist = re.findall(pat,data)

#遍历输出结果
for v in dlist:
	print(v[1]+':'+v[0])